perm filename COMT.PAL[AL,HE] blob sn#207461 filedate 1976-03-22 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00012 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	CONDITION MONITORS: CMMAK, CMENB, CMSKED, CMTRIG
C00004 00003	ARITHMETIC: VMAKE
C00006 00004	GRAPH STRUCTURE:  MCLC, MEXP, ENDCLC
C00009 00005	GRAPH STRUCTURE:  MCHG, GTNEW, GTOLD
C00010 00006	GLOBAL DECLARATIONS:  GLBLNK
C00011 00007	FORCE MONITORS:  MAKFORCE, GETFORCE, DESFORCE
C00012 00008	SSBRTN
C00013 00009	FORCE MONITORING:  MAKFORCE, GETFORCE, DESFORCE, MOVE
C00019 00010	PARALLEL CODE:  XSPROUT, WAITE, SIGNAL
C00020 00011	PROG, TINVRT, TTMUL
C00021 00012	ALAID
C00022 ENDMK
C⊗;
;CONDITION MONITORS: CMMAK, CMENB, CMSKED, CMTRIG

COMMENT ⊗
	XPRINT
	L45	;Say hello
	XCMMAK	
	20	;CM at 20
	L30	;Code at L30 for c-m
	XMVAR	;
	10	;X
	12	;y
	0
	XPUSH	;X ← L41
	L41
	XCHNGE	
	10
	XPUSH	;Y ← L41.5 (= 0)
	L41.5
	XCHNGE	
	12
	XCMENB	;Enable checker
	20
L32:	XGTVAL	;X ← X - 1
	10	;
	XCOPY	;
	0
	XPRNTS	;Say what X is
	XPUSH	;
	L43	;Push 1
	XSSUB	;Subtract
	XCHNGE	;
	10	;
	XGTVAL	;
	12	;Y=0?
	XJUMPC	;
	2	;
	L32	;If so, loop
	XCMDEST	;else get rid of checker
	20	;
	0
	XTERMINATE;and go away

L30:	XCMSKED	;Checker body
	XPRINT	;Say "."
	L46	;
	XGTVAL	;X≤0?
	10	;
	XJUMPC	;
	7	;if GT then jump
	L30	;
	XCMTRIG	;Yes.  trigger
	XPRINT
	L44	;Say "zero"
	XPUSH	;
	L41	;SET Y ← 10.0
	XCHNGE	;
	12	;
	XJUMP	;
	L30	;

;data area
L41:	41040	;10.0
	0
L41.5:	0	;0.0
	0
L42:	ASCIE </
	DECREMENTING/>
L43:	40200	;1.0
	0
L44:	ASCIE </
	ZERO/>
L45:	ASCIE </
	TEST OF CONDITION CHECKERS
/>
L46:	ASCIE </./>

;⊗
;ARITHMETIC: VMAKE

COMMENT ⊗
L1:	XMVAR
	10	;X
	12	;Y
	14	;Z
	16	;W
	0
	XPUSH	;X ← L103
	L103
	XCHNGE
	10
	XPUSH	;Y ← L105
	L105
	XCHNGE
	12
	XPUSH	;Z ← L107
	L107
	XCHNGE
	14

	XGTVAL	;W ← X . Y . Z
	10
	XGTVAL
	12
	XGTVAL
	14
L2:	XVMAKE
	XCHNGE
	16
	XPRINT	;
	A1	;
	XVARPRN	;
	16	;W
	XTERMINATE

L103:		;VECTOR(44.5, 44.5, 44.5, 2)
	41462
	0
	41462
	0
	41462
	0
	40400
	0

L105:		;VECTOR(10, 10, 10, 1)
	41040
	0
	41040
	0
	41040
	0
	40200
	0

L107:		;VECTOR(20, 20, 20, 1)
	41240
	0
	41240
	0
	41240
	0
	40200
	0
A1:	ASCIE /W = /
;⊗
;GRAPH STRUCTURE:  MCLC, MEXP, ENDCLC

COMMENT ⊗
	XMVAR
	20	;X
	22	;Y
	24	;Z
	26	;W
	0	;
	XPUSH	;X ← 1
	L1	;
	XCHNGE	;
	20	;
	XPUSH	;Y ← 1
	L1	;
	XCHNGE	;
	22	;
	XMEXP	;EXPR(X + Y)
	20	;neededs
	22	;
	0	;
	L10	;code
	30	;offset
	XMCLC	;
	30	;Expr
	24	;Z <= EXPR
	XMCLC	;
	30	;Expr
	26	;W <= EXPR
	XMEXP	;W <= Z
	24	;neededs
	0	;
	L11	;code
	34	;offset
	XMCLC	;
	34	;Expr
	26	;W
	XGTVAL	;Print W
	26	;
	XPRNTS	;
	XKVAR	;
	20	;
	0	;
	XDCLC	;
	34	;
	26	;W
	XKVAR	;
	22	;
	24	;
	26	;
	0	;
	XTERMINATE
L10:	XGTVAL	;X
	20	;
	XGTVAL	;Y
	22	;
	XSADD	;+
	XENDCLC	;
L11:	XGTVAL	;Z
	24	;
	XENDCLC	;
L1:	40200	;1
	0
;⊗
;GRAPH STRUCTURE:  MCHG, GTNEW, GTOLD

COMMENT ⊗
	XMVAR
	20	;X
	22	;Y
	24	;Z
	26	;W
	0	;
	XPUSH	;X ← 1
	L1	;
	XCHNGE	;
	20	;
	XPUSH	;Y ← 1
	L1	;
	XCHNGE	;
	22	;
	XMCHG	;WHEN CHANGE X DO [Z ← NEW-OLD; PRINT Z]
	20	;
	L10	;code
	XMCHG	;WHEN CHANGE Z DO [PRINT Z]
	24	;
	L11	;code
	XPUSH	;X ← 10
	L2	;
	XCHNGE	;
	20	;
	XTERMINATE
L10:	XGTNEW	;
	XGTOLD	;
	XSSUB	;-
	XCOPY	;
	0
	XPRNTS	;
	XCHNGE	;
	24	;Z
	XTERMINATE
L11:	XGTVAL	;
	24	;Z
	XPRNTS	;
	XTERMINATE
L1:	40200	;1
	0
L2:	41040	;=10
	0
;⊗
;GLOBAL DECLARATIONS:  GLBLNK

COMMENT ⊗
	XMVAR 	;
	20	;X
	0	;
	XPUSH	;
	L1	;1.0
	XCHNGE	;
	20	;X
	XGLBLNK	;
	24	;Z
	11111	;
	17777	;
	XGLBLNK	;
	26	;Z1
	21111	;
	17777	;
	XGLBLNK	;
	30	;Z1
	21111	;
	17777	;
	XGTVAL	;
	20	;X
	XCHNGE	;
	26	;Z
	XGTVAL	;
	30	;Z
	XPRNTS	;
	XKVAR	;
	20	;X
	XBREAK	;
	XTERMINATE
L1:	40200	;1.0
	0
⊗
;FORCE MONITORS:  MAKFORCE, GETFORCE, DESFORCE

COMMENT ⊗

	XPUSH	;
	L1	;vector
	XPUSH	;
	L1	;vector
	XMAKFORCE
	20	;F
	1	;yellow arm
	XGETFORCE	;
	20
	XPRNTS	;
	XBRACE	;
	XDESFORCE	;
	20	;
	XTERMINATE	;
L1:	40200	;
	0
	40400	;
	0
	40600	;
	0	;
;⊗
;SSBRTN

COMMENT ⊗

	XPUSH
	L1	;4.0
	XSSBRTN
	1	;SQRT
	XPRNTS	;
	XTERMINATE
L1:	40600	;
	0	;
;⊗
;FORCE MONITORING:  MAKFORCE, GETFORCE, DESFORCE, MOVE

COMMENT ⊗
		;PROG
	XMVAR
	10
	12
	14
	16
	0
		;BLOCK
	XMVAR
		;$B1.DEST
	22
		;$B1.STAND
	24
		;$B1.DUMMY
	26
		;$B1.S
	30
	0
	XPUSH	
	L20	;force (0 10 0)
	XPUSH
	L21	;moment (all zeroes)
	XMAKFORCE
	34	;FORCE VARIABLE
	4	;blue arm
	XJUMP
	L22
L20:	0
	0
	41040
	0
	0
	0
L21:	0
	0
	0
	0
	0
	0
		;Condition monitor checker
L2:	XCMSKED
	144
	XCMTRIG
	XGETFORCE	;
	34
	XCOPY 	;
	0	;
	XPRNTS	;JUST SAY IT
	XJUMPC	;if negative,
	5
	L51	;
	XSTOP	;stop the arm
	4	;
L51:	XCMENB	;
	32	;reenable
	XJUMP
	L2
		;Create condition monitor
L22:	XCMMAK
	32
	0
	L2
	XCMENB
	32	;enable him
		;Assignment
	XPUSH
	L4
		;$B1.STAND
	XCHNGE
	24
		;Assignment
	XPUSH
	L5
		;BARM
	XCHNGE
	14
		;Assignment
	XPUSH
	L6
		;$B1.DEST
	XCHNGE
	22
		;MOVE
	XMOVE
	L7
		;MOVE
	XMOVE
	L11
		;Block end cleanup
	XKVAR
	22
	24
	26
	30
	0
	XCMDES
	32
	0
	XDESFORCE
	34	;FORCE VARIABLE
		;END BLOCK
		;END PROG
	XKVAR
	10
	12
	14
	16
	0
	XTERMINATE

		;Motion table
L7:	770
	0
	0
		;Relative segment pointer
	310
	2774
	L11
	0
		;Coefficients, gravity, inertia
	42064
	2474
	0
	0
	0
	0
	142566
	110003
	42670
	166002
	142423
	170002
	141664
	130770
	0
	0
	0
	0
	137536
	2000
	37646
	101000
	137405
	33000
	41140
	26676
	0
	0
	0
	0
	141003
	117156
	41105
	66644
	140635
	170520
	141664
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	41663
	47010
	0
	0
	0
	0
	137536
	2000
	37646
	101000
	137405
	33000
	36634
	163754
	0
	0
	0
	0
	142566
	107457
	42670
	165543
	142423
	167603
	0
	0
	47126
	110677
	42444
	146375
	47330
	70072
	140151
	65472
	44754
	142200
	0
	0
	46073
	64100
	137107
	173154
	46015
	107110
	0
	0
	45130
	123200
	0
		;End of motion table
		;Motion table
L11:	770
	0
	0
		;Relative segment pointer
	310
	2774
	0
	0
		;Coefficients, gravity, inertia
	41642
	145166
	0
	0
	0
	0
	42566
	110003
	142670
	166002
	42423
	170002
	141664
	136421
	0
	0
	0
	0
	37536
	2000
	137646
	101000
	37405
	33000
	41123
	2115
	0
	0
	0
	0
	41003
	117156
	141105
	66644
	40635
	170520
	141664
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	41663
	41357
	0
	0
	0
	0
	37536
	2000
	137646
	101000
	37405
	33000
	141705
	32612
	0
	0
	0
	0
	42566
	107457
	142670
	165543
	42423
	167603
	0
	0
	47132
	37034
	42513
	44174
	47332
	43145
	140132
	152222
	44754
	142200
	0
	0
	46073
	64111
	137107
	173156
	46015
	107110
	0
	0
	45130
	123200
	0
		;End of motion table
L3:	40200
	0
L4:	40200
	0
	0
	0
	0
	0
	0
	0
	0
	0
	140200
	0
	32711
	7733
	0
	0
	0
	0
	132711
	7733
	140200
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
L5:	40200
	0
	0
	0
	0
	0
	0
	0
	0
	0
	140200
	0
	0
	0
	0
	0
	0
	0
	0
	0
	140200
	0
	0
	0
	41456
	24366
	41543
	70244
	41053
	127025
	0
	0
L6:	40200
	0
	0
	0
	0
	0
	0
	0
	0
	0
	140200
	0
	0
	0
	0
	0
	0
	0
	0
	0
	140200
	0
	0
	0
	41406
	24366
	41473
	70244
	41053
	127025
	0
	0
		;Trans pointer for motion
L10:	22
	0
;⊗
;PARALLEL CODE:  XSPROUT, WAITE, SIGNAL

COMMENT ⊗

	XMAKEVT
	20
	0
	XSPROUT
	L1
	L2
	L3
	0
	XTERMINATE
L1:	XNOOP
	XWAITE
	20
	XNOOP
	XTERMINATE
L2:	XNOOP
	XWAITE
	20
	XNOOP
	XTERMINATE
L3:	XNOOP
	XSIGNAL
	20
	XSIGNAL
	20
	XNOOP
	XTERMINATE

;⊗
;PROG, TINVRT, TTMUL

COMMENT ⊗

	XPROG	;
	XPUSH	;
	L1
	XCOPY
	0
	XTINVRT	;
	XTTMUL
	XTERMINATE
L1:	40200
	0
	0
	0
	0
	0
	0
	0
	0
	0
	140200
	0
	0
	0
	0
	0
	0
	0
	0
	0
	140200
	0
	0
	0
	41456
	24366
	41543
	70244
	41053
	127025
	0
	0
;⊗
;ALAID

;COMMENT ⊗

COMMENT ∩ S expression:
(PR
    (BL
    (SVAR S1 S2)
    (EVAR E1)
    (WHILE 1
        (EVDO E1 -)
        (PRINT "GOTCHA")
        )
    )
)
; ∩

	XPROG
	XMVAR
	32
	34
	0
	XMAKEVT
	30
	0
L1:	XWAITE
	30
	XPRINT
	L2
	XJUMP
	L1
	XTERMINATE
L2:	ASCIE </
GOTCHA!/>
;⊗